#!/usr/bin/env python
import os
from app import create_app, db
from app.models import User, Role, Permission
from flask_script import Manager, Shell
from flask_migrate import Migrate, MigrateCommand
import logging
# from flask_alchemydumps import AlchemyDumps, AlchemyDumpsCommand


app = create_app(os.getenv('FLASK_CONFIG') or 'default')
manager = Manager(app)
migrate = Migrate(app, db)


def make_shell_context():
    return dict(app=app, db=db, User=User, Role=Role, Permission=Permission)


# alchemydumps = AlchemyDumps(app, db)
manager.add_command("shell", Shell(make_context=make_shell_context))
manager.add_command('db', MigrateCommand)
# manager.add_command('alchemydumps', AlchemyDumpsCommand)


@manager.command
def test():
    """Run the unit tests."""
    import unittest
    tests = unittest.TestLoader().discover('tests')
    unittest.TextTestRunner(verbosity=2).run(tests)


# logging setting
path_of_current_dir = os.path.abspath(os.path.dirname(os.getcwd()))
app_log_path = '%s/logs/%s_error.log' % (path_of_current_dir, 'app')

logging.basicConfig(filename=app_log_path,
                    format='%(asctime)s %(pathname)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
                    datefmt='%Y/%m/%d %H:%M:%S',
                    level=logging.DEBUG)


if __name__ == '__main__':
    manager.run()
